package com.qingfeng.client.api;

import com.alibaba.fastjson.JSONObject;
import com.qingfeng.client.bean.GoodsType;
import com.qingfeng.client.bean.Seller;
import com.qingfeng.client.dao.GoodsTypeMapper;
import com.qingfeng.client.service.GoodsTypeService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.List;

/**
 * @Author ff
 * @Data 2017/10/26 15:58
 */
@Api(tags = "商品类别")
@RestController
@RequestMapping(value = "/api/goodsType")
public class GoodsTypeApi extends BaseV1Api {

    @Resource
    private GoodsTypeMapper goodsTypeDao;
    @Resource
    private GoodsTypeService goodsTypeService;

    @ApiOperation("获取子级商品类别")
    @GetMapping(value = "/getTypes/{parentId}")
    public Object getTypes(@PathVariable(value = "parentId") int parentId){
        List list = goodsTypeDao.queryByParentId(parentId);
        if (list==null){
            return error(null);
        }else{
            return success(list);
        }
    }
    @ApiOperation("获取单个层级所有商品类别")
    @RequestMapping(value = "/getTypesByLevel/{level}")
    public Object getTypesByLevel(@PathVariable(value = "level") int level){
        List list = goodsTypeDao.selectAllByLevel(level);
        if (list==null){
            return error(null);
        }else{
            return success(list);
        }
    }



    /**
     * 类别管理（新增类别）
     */
    @ApiOperation("新增商品类别")
    @RequestMapping(value = "/addType")
    public Object addType(@RequestBody JSONObject jsonObject){
        Seller seller = getUser();
        String name = jsonObject.getString("name");
        String icon = jsonObject.getString("icon");
        if (!goodsTypeService.addType(name,seller.getStoreId(),icon)){
            return error("新增失败");
        }
        return success("新增成功");
    }

    /**
     * 类别管理（修改名称）
     */
    @ApiOperation("修改商品类别")
    @RequestMapping(value = "/updateTypeName")
    public Object updateTypeName(@RequestBody JSONObject jsonObject){
        String name = jsonObject.getString("name");
        int id = jsonObject.getIntValue("id");
        boolean reslut = goodsTypeService.updateGoodsType(name,id);
        if (!reslut){
            return error("修改失败!");
        }
        return success("修改成功!");
    }

    /**
     * 类别管理（删除品类）
     */
    @ApiOperation("删除商品类别")
    @RequestMapping(value = "/deleteGoodsType")
    public Object deleteGoodsType(@RequestBody JSONObject jsonObject){
        int id = jsonObject.getIntValue("id");
        int number = goodsTypeDao.selects(id);
        if (number>0){
            return error("删除失败，请变更该类别下商品的类别信息");
        }
        int i = goodsTypeService.deleteType(id);
        if (i==0){
            return error("删除失败");
        }
        return success("删除成功");
    }

    /**
     * 类别管理（类别拖拽排序）
     */
    @ApiOperation("商品类别拖拽排序")
    @RequestMapping(value = "/dragSort")
    public Object dragSort(@RequestBody List<GoodsType> list){
        if (CollectionUtils.isEmpty(list)){
            return error("传递参数不存在");
        }
        boolean drag = goodsTypeService.dragSort(list);
        if (!drag){
            return error("拖拽排序失败");
        }
        return success("拖拽排序成功");
    }
}
